package com.luoran.car.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

@ApiModel(value = "客户实体类")
@TableName(value = "sys_car_customer")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SysCarCustomer implements Serializable {
    /**
     * 客户记录唯一标识ID，自增整数类型，作为主键
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "客户记录的唯一标识，自增整数类型，在数据库中作为主键", example = "1")
    private Integer id;

    /**
     * 客户头像的路径或URL
     */
    @TableField(value = "customer_avatar")
    @ApiModelProperty(value = "客户头像的路径或者URL地址，用于显示客户的头像", example = "https://example.com/avatar.jpg")
    private String customerAvatar;

    /**
     * 客户姓名
     */
    @TableField(value = "customer_name")
    @ApiModelProperty(value = "客户的姓名，用于标识客户身份", example = "张三")
    private String customerName;

    /**
     * 客户出生日期
     */
    @TableField(value = "birth_date")
    @DateTimeFormat(pattern = "yyyy - MM - dd")
    @JsonFormat(pattern = "yyyy - MM - dd", timezone = "GMT+8")
    @ApiModelProperty(value = "客户的出生日期，格式为yyyy - MM - dd", example = "1990 - 01 - 01")
    private Date birthDate;

    /**
     * 客户性别，可取值如“男”“女”等
     */
    @TableField(value = "gender")
    @ApiModelProperty(value = "客户的性别，取值为'男'或者'女'等", example = "男")
    private String gender;

    /**
     * 省份的外键ID
     */
    @TableField(value = "province_id")
    @ApiModelProperty(value = "省份的外键ID，关联到省份表中的ID字段", example = "1")
    private Integer provinceId;

    /**
     * 城市的外键ID
     */
    @TableField(value = "city_id")
    @ApiModelProperty(value = "城市的外键ID，关联到城市表中的ID字段", example = "2")
    private Integer cityId;

    /**
     * 区/县的外键ID
     */
    @TableField(value = "district_id")
    @ApiModelProperty(value = "区/县的外键ID，关联到区/县表中的ID字段", example = "3")
    private Integer districtId;

    /**
     * 客户登录密码
     */
    @TableField(value = "login_password")
    @ApiModelProperty(value = "客户登录系统时使用的密码", example = "123456")
    private String loginPassword;

    /**
     * 客户邮箱地址
     */
    @TableField(value = "email")
    @ApiModelProperty(value = "客户的邮箱地址，可用于接收通知等", example = "example@example.com")
    private String email;

    /**
     * 客户记录创建时间
     */
    @TableField(value = "create_time")
    @DateTimeFormat(pattern = "yyyy - MM - dd")
    @JsonFormat(pattern = "yyyy - MM - dd", timezone = "GMT+8")
    @ApiModelProperty(value = "客户记录创建的时间，格式为yyyy - MM - dd", example = "2024 - 01 - 01")
    private Date createTime;

    /**
     * 创建该客户记录的人员
     */
    @TableField(value = "created_by")
    @ApiModelProperty(value = "创建该客户记录的人员名称", example = "管理员")
    private String createdBy;

    /**
     * 客户记录最后更新时间
     */
    @TableField(value = "update_time")
    @DateTimeFormat(pattern = "yyyy - MM - dd")
    @JsonFormat(pattern = "yyyy - MM - dd", timezone = "GMT+8")
    @ApiModelProperty(value = "客户记录最后更新的时间，格式为yyyy - MM - dd", example = "2024 - 09 - 20")
    private Date updateTime;

    /**
     * 最后更新该客户记录的人员
     */
    @TableField(value = "updated_by")
    @ApiModelProperty(value = "最后更新该客户记录的人员名称", example = "操作员")
    private String updatedBy;

    /**
     * 备用字段，可用于记录一些特殊情况或备注信息
     */
    @TableField(value = "customer_status")
    @ApiModelProperty(value = "账号状态 1 锁定 0 正常", example = "1")
    private Integer customerStatus;

    /**
     * 不存在于数据库表中的字段，可能用于临时存储一些代码相关的值
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "不存在于数据库表中的字段，可临时存储一些代码相关的值", example = "tempCodeValue")
    private String code;

    /**
     * 不存在于数据库表中的字段，可能用于临时存储一些唯一标识相关的值
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "不存在于数据库表中的字段，可临时存储一些唯一标识相关的值", example = "uniqueIdValue")
    private String uid;

    @TableField(exist = false)
    private String provinceName;
    @TableField(exist = false)
    private String cityName;
    @TableField(exist = false)
    private String districtName;


    private static final long serialVersionUID = 1L;
}
